package com.engine4cloud.tdf.supervision.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.engine4cloud.tdf.common.core.constant.enums.CorAuditActionStatusEnum;
import com.engine4cloud.tdf.common.data.web.response.PageInfo;
import com.engine4cloud.tdf.common.data.web.response.Params;
import com.engine4cloud.tdf.supervision.dto.IdentityUniqueCheckDTO;
import com.engine4cloud.tdf.supervision.dto.create.JzdxCreateDTO;
import com.engine4cloud.tdf.supervision.dto.query.JzdxQueryDTO;
import com.engine4cloud.tdf.supervision.dto.query.JzdxSimpleQueryDTO;
import com.engine4cloud.tdf.supervision.dto.result.JzdxResultDTO;
import com.engine4cloud.tdf.supervision.dto.result.JzdxSimpleResultDTO;
import com.engine4cloud.tdf.supervision.dto.update.JzdxAuditDepartUpdateDTO;
import com.engine4cloud.tdf.supervision.dto.update.JzdxPreActionUpdateDTO;
import com.engine4cloud.tdf.supervision.dto.update.JzdxUpdateDTO;
import com.engine4cloud.tdf.supervision.entity.JzdxEntity;

public interface JzdxService extends IService<JzdxEntity> {

    PageInfo<JzdxResultDTO> pageList(Params pageable, JzdxQueryDTO dto);

    JzdxResultDTO getById(Long id);

    JzdxResultDTO getByCode(String code);

    JzdxEntity getByIdentityNotRelease(String identity);

    String create(JzdxCreateDTO dto);

    Boolean update(JzdxUpdateDTO dto);

    /**
     * 身份证号是否唯一
     *
     * @param dto dto
     * @return Boolean
     */
    Boolean checkUniqueByIdentity(IdentityUniqueCheckDTO dto);

    Boolean changeDepart(JzdxAuditDepartUpdateDTO update, CorAuditActionStatusEnum actionStatus);

    /**
     * 设置矫正对象所在四级部门，矫正对象：接收入矫时新增，执行地变更之后（省内更新；省外删除，解除矫正不做处理）
     *
     * @param dx 矫正对象
     * @return Boolean
     */
    Boolean setDepart(JzdxResultDTO dx);

    /**
     * 初始化矫正对象编号
     *
     * @param deptId 登录人员所属部门
     * @return 矫正对象编号
     */
    String initCorrectorCode(Long deptId);

    Integer absence(String code);

    void changeAction(JzdxPreActionUpdateDTO dto);

    PageInfo<JzdxSimpleResultDTO> simplePageList(JzdxSimpleQueryDTO dto);
}